home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / msqllib / example / monitor / monitor.c < prev    next >
C/C++ Source or Header  |  1999-01-01  |  7KB  |  228 lines

  1. /*
  2.         msql.library monitor example
  3.         ©1998 Christophe Sollet (cfc@iname.com)
  4.  
  5.         This monitor example list all msql.library function call.
  6. */
  7.  
  8. #include <exec/types.h>
  9. #include <exec/memory.h>
  10. #include <proto/exec.h>
  11. #include <proto/msql.h>
  12. #include <utility/hooks.h>
  13. #include <utility/tagitem.h>
  14. #include <dos/dos.h>
  15. #include <stdlib.h>
  16. #include <stdio.h>
  17. #include <string.h>
  18.  
  19. struct Hook *hook;
  20. struct MsgPort *port;
  21.  
  22. struct Library *MsqlBase;
  23.  
  24. struct HMessage
  25. {
  26.     struct Message msg;
  27.     struct HookMessage *hmsg;
  28. };
  29.  
  30. ULONG __saveds __asm HookFunc(register __a0 struct Hook *hook, register __a2 APTR object, register __a1 APTR message)
  31. {
  32.     struct HMessage *hm;
  33.     struct MsgPort *rp;
  34.  
  35.     if(hm = AllocMem(sizeof(struct HMessage), MEMF_CLEAR))
  36.     {
  37.         if(rp = CreateMsgPort())
  38.         {
  39.             hm->msg.mn_Node.ln_Type = NT_MESSAGE;
  40.             hm->msg.mn_Length = sizeof(struct HMessage);
  41.             hm->msg.mn_ReplyPort = rp;
  42.  
  43.             hm->hmsg = message;
  44.             PutMsg(port, (struct Message *) hm);
  45.             WaitPort(rp);
  46.             GetMsg(rp);
  47.  
  48.             DeleteMsgPort(rp);
  49.         }
  50.         FreeMem(hm, sizeof(struct HMessage));
  51.     }
  52.     return NULL;
  53. }
  54.  
  55. main()
  56. {
  57.     struct HMessage *hm;
  58.     char buffer[80];
  59.  
  60.     if(MsqlBase = OpenLibrary("msql.library", 4))
  61.     {
  62.         if(port = CreateMsgPort())
  63.         {
  64.             if(hook = AllocVec(sizeof(struct Hook), MEMF_CLEAR))
  65.             {
  66.                 hook->h_Entry = (HOOKFUNC) HookFunc;
  67.                 if(MsqlAddMHook(hook, TAG_DONE))
  68.                 {
  69.                     BOOL fin = FALSE;
  70.                     while(!fin)
  71.                     {
  72.                         ULONG sigrevd = Wait((1L << port->mp_SigBit) | SIGBREAKF_CTRL_C);
  73.  
  74.                         if(sigrevd & SIGBREAKF_CTRL_C)
  75.                             fin = TRUE;
  76.                         else
  77.                         {
  78.                             while(hm = (struct HMessage *) GetMsg(port))
  79.                             {
  80.                                 if(hm->hmsg->type == FCH_ENTER)
  81.                                     strcpy(buffer, "0x%x-->%s"); else strcpy(buffer, "0x%x<--%s");
  82.  
  83.                                 switch(hm->hmsg->id)
  84.                                 {
  85.                                     case MFT_AllocConnection    :
  86.                                         printf(buffer, hm->hmsg->task,  "MsqlAllocConnection()");
  87.                                         break;
  88.                                     case MFT_FreeConnection    :
  89.                                         printf(buffer, hm->hmsg->task,  "MsqlFreeConnection()");
  90.                                         break;
  91.                                     case MFT_GetErrMsg        :
  92.                                         printf(buffer, hm->hmsg->task,  "MsqlGetErrMsg()");
  93.                                         break;
  94.                                     case MFT_Connect            :
  95.                                         printf(buffer, hm->hmsg->task,  "MsqlConnect()");
  96.                                         break;
  97.                                     case MFT_SelectDB        :
  98.                                         printf(buffer, hm->hmsg->task,  "MsqlSelectDB()");
  99.                                         break;
  100.                                     case MFT_Query            :
  101.                                         printf(buffer, hm->hmsg->task,  "MsqlQuery()");
  102.                                         break;
  103.                                     case MFT_CreateDB        :
  104.                                         printf(buffer, hm->hmsg->task,  "MsqlCreateDB()");
  105.                                         break;
  106.                                     case MFT_DropDB            :
  107.                                         printf(buffer, hm->hmsg->task,  "MsqlDropDB()");
  108.                                         break;
  109.                                     case MFT_Shutdown        :
  110.                                         printf(buffer, hm->hmsg->task,  "MsqlShutdown()");
  111.                                         break;
  112.                                     case MFT_GetProtoInfo    :
  113.                                         printf(buffer, hm->hmsg->task,  "MsqlGetProtoInfo()");
  114.                                         break;
  115.                                     case MFT_ReloadAcls        :
  116.                                         printf(buffer, hm->hmsg->task,  "MsqlReloadAcls()");
  117.                                         break;
  118.                                     case MFT_GetServerInfo    :
  119.                                         printf(buffer, hm->hmsg->task,  "MsqlGetServerInfo()");
  120.                                         break;
  121.                                     case MFT_GetHostInfo        :
  122.                                         printf(buffer, hm->hmsg->task,  "MsqlGetHostInfo()");
  123.                                         break;
  124.                                     case MFT_Close            :
  125.                                         printf(buffer, hm->hmsg->task,  "MsqlClose()");
  126.                                         break;
  127.                                     case MFT_DataSeek        :
  128.                                         printf(buffer, hm->hmsg->task,  "MsqlDataSeek()");
  129.                                         break;
  130.                                     case MFT_FieldSeek        :
  131.                                         printf(buffer, hm->hmsg->task,  "MsqlFieldSeek()");
  132.                                         break;
  133.                                     case MFT_FreeResult        :
  134.                                         printf(buffer, hm->hmsg->task,  "MsqlFreeResult()");
  135.                                         break;
  136.                                     case MFT_FetchRow        :
  137.                                         printf(buffer, hm->hmsg->task,  "MsqlFetchRow()");
  138.                                         break;
  139.                                     case MFT_FetchField        :
  140.                                         printf(buffer, hm->hmsg->task,  "MsqlFetchField()");
  141.                                         break;
  142.                                     case MFT_ListDBs            :
  143.                                         printf(buffer, hm->hmsg->task,  "MsqlListDBs()");
  144.                                         break;
  145.                                     case MFT_ListTables        :
  146.                                         printf(buffer, hm->hmsg->task,  "MsqlListTables()");
  147.                                         break;
  148.                                     case MFT_ListFields        :
  149.                                         printf(buffer, hm->hmsg->task,  "MsqlListFields()");
  150.                                         break;
  151.                                     case MFT_ListIndex        :
  152.                                         printf(buffer, hm->hmsg->task,  "MsqlListIndex()");
  153.                                         break;
  154.                                     case MFT_StoreResult        :
  155.                                         printf(buffer, hm->hmsg->task,  "MsqlStoreResult()");
  156.                                         break;
  157.                                     case MFT_LoadConfigFile    :
  158.                                         printf(buffer, hm->hmsg->task,  "MsqlLoadConfigFile()");
  159.                                         break;
  160.                                     case MFT_GetIntConfOld    :
  161.                                         printf(buffer, hm->hmsg->task,  "MsqlGetIntConfOld()");
  162.                                         break;
  163.                                     case MFT_GetCharConfOld    :
  164.                                         printf(buffer, hm->hmsg->task,  "MsqlGetCharConfOld()");
  165.                                         break;
  166.                                     case MFT_GetIntConf        :
  167.                                         printf(buffer, hm->hmsg->task,  "MsqlGetIntConf()");
  168.                                         break;
  169.                                     case MFT_GetCharConf        :
  170.                                         printf(buffer, hm->hmsg->task,  "MsqlGetCharConf()");
  171.                                         break;
  172.                                     case MFT_GetServerStats    :
  173.                                         printf(buffer, hm->hmsg->task,  "MsqlGetServerStats()");
  174.                                         break;
  175.                                     case MFT_CopyDB            :
  176.                                         printf(buffer, hm->hmsg->task,  "MsqlCopyDB()");
  177.                                         break;
  178.                                     case MFT_MoveDB            :
  179.                                         printf(buffer, hm->hmsg->task,  "MsqlMoveDB()");
  180.                                         break;
  181.                                     case MFT_UnixTimeToDate    :
  182.                                         printf(buffer, hm->hmsg->task,  "MsqlUnixTimeToDate()");
  183.                                         break;
  184.                                     case MFT_UnixTimeToTime    :
  185.                                         printf(buffer, hm->hmsg->task,  "MsqlUnixTimeToTime()");
  186.                                         break;
  187.                                     case MFT_GetSequenceInfo    :
  188.                                         printf(buffer, hm->hmsg->task,  "MsqlGetSequenceInfo()");
  189.                                         break;
  190.                                     case MFT_DateToUnixTime    :
  191.                                         printf(buffer, hm->hmsg->task,  "MsqlDateToUnixTime()");
  192.                                         break;
  193.                                     case MFT_TimeToUnixTime    :
  194.                                         printf(buffer, hm->hmsg->task,  "MsqlTimeToUnixTime()");
  195.                                         break;
  196.                                     case MFT_SumTimes        :
  197.                                         printf(buffer, hm->hmsg->task,  "MsqlSumTimes()");
  198.                                         break;
  199.                                     case MFT_DateOffset        :
  200.                                         printf(buffer, hm->hmsg->task,  "MsqlDateOffset()");
  201.                                         break;
  202.                                     case MFT_DiffTimes        :
  203.                                         printf(buffer, hm->hmsg->task,  "MsqlDiffTimes()");
  204.                                         break;
  205.                                     case MFT_DiffDates        :
  206.                                         printf(buffer, hm->hmsg->task,  "MsqlDiffDates()");
  207.                                         break;
  208.                                     default:
  209.                                         printf("Unknown function call!");
  210.                                         break;
  211.  
  212.                                 }
  213.                                 printf("\n");
  214.                                 ReplyMsg((struct Message *) hm);
  215.                             }
  216.                         }
  217.                     }
  218.                     MsqlRemMHook(hook);
  219.                 }
  220.                 FreeVec(hook);
  221.             }
  222.             while(hm = (struct HMessage *) GetMsg(port)) ReplyMsg((struct Message *) hm);
  223.             DeleteMsgPort(port);
  224.         }
  225.         CloseLibrary(MsqlBase);
  226.     }
  227. }
  228.